A Managed C++ programozási nyelv

Szintaxis

Szintaxis

A lexikális elemekre ugyanazok a szabályok vonatkoznak, mint a C++ nyelvben, kivéve az alábbi bővítéseket:

Kulcsszó használata azonosítóként. Előfordulhat, hogy egy másik nyelven megírt azonosítóra kell hivatkoznunk a kódban, és ez az azonosító történetesen megegyezik a nyelv valamelyik kulcsszavával. Ilyen esetekben az __identifier kulcsszóval jelezhetjük a fordítónak, hogy az argumentumában szereplő lexikális elem nem kulcsszó, hanem azonosító.

Az alábbi példában egy operator nevű osztályt példányosítunk, amely az operator.dll könyvtárban van megvalósítva:

#using "operator.dll" // Tartalmazza az "operator" osztályt. void () { __identifier(operator) *pOperator = new __identifier(operator); }

Karakterláncok. A nyelvben többféle sztringliterál létezik. A hagyományoson kívül:

String* s = "Ez egy ANSI sztring"; String* s = L"Ez egy UNICODE sztring"; String* s = S"Ez egy .NET sztring";

Az ANSI (prefix nélkül) és a UNICODE (L prefixszel) sztring már ismerős lehet, a .NET (S prefixszel) sztringek újak, jobb teljesítményt nyújtanaka hagyományos C++ sztringliteráloknál. A teljesen megegyező karakterláncok példányai ugyanarra a sztring objektumra mutatnak. (Megjegyzés: a hagyományos C++ fordítók is gyakran élnek ezzel az optimalizációs lehetőséggel, de a szabvány nem írja elő.) A következő példa szemlélteti az előbb elmondottakat:

s1 = S"Ez egy .NET sztring"; s2 = S"Ez egy .NET sztring"; if (s1 == s2) printf("s1 == s2\n"); else printf("s1 != s2\n"); s1 = "Ez egy C++ sztring"; s2 = "Ez egy C++ sztring"; if (s1 == s2) printf("s1 == s2\n"); else printf("s1 != s2\n");

A futtatás eredménye:

s1 == s2 s1 != s2

Fontos tulajdonság: C++ sztringeket bárhol használhatunk ott ahol .NET sztringeket használnánk, de ez fordítva nem igaz.

Vegyük észre, hogy a fenti kódban használtuk a printf parancsot. Pusztán azért mert .NET típusokat és metódusokat használunk, nem kell lemondanunk a hagyományos felügyeletlen könyvtárakról.